

#include "BinaryStandardFormatLogger.hpp"
#include "XmlLogger.hpp"

#include <iostream>
#include <cstdlib>
#include <cassert>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include "CompressorProcess.h"
//#include "ipc.h"


using namespace std;

#define BUFFSIZE    4096
#define SIZE_T      sizeof(size_t)
#define SIZE_PTR    sizeof(void*)

int main(int argc,char** argv)
{   
  int n;
  
  if(argc>=2){
	n=atoi(argv[1]);
  }
  else{
    n=1;
  }
  pid_t child = fork();

  
  /*Processus instrumeté*/
  if(child==0){
  /*Un logger binaire*/
  BinaryStandardFormatLogger* loggeur=new BinaryStandardFormatLogger();
 
  loggeur->initLogger();
  /*Un transformer XML*/
  //XmlLogger xmlLogger;
  
  /*Une boucle d'allocation*/
  for(int i=0;i<120;i++)
  {
    loggeur->startMalloc ((void*)i,10,0,0);
    loggeur->startCalloc ((void*)i,2,5,0,0);
    loggeur->startRealloc((void*)i,&loggeur,10,0,0);
    loggeur->startFree   ((void*)i,0);
  }
  
  loggeur->finitLogger();
  /*On ferme le fichier binaire*/
  delete loggeur;
  
  printf("Le processus instrumenté a fini\n");
  }
  else
  {
    CompressorProcess cpr;
    cpr.initIPC();
    cpr.startWork();
    cpr.finitIPC();
  }
  
  /*On demande au loggeur XML de transformer le fichier binaire en fichier XML*/ 
  //xmlLogger.transforme();	
  return 0;
}
